package org.opsli.plugins.generator.utils;

import com.jfinal.kit.Kv;

import java.nio.file.Files;
import java.nio.file.Paths;

/**
 * 字段名调试示例
 */
public class FieldDebugExample {

    public static void debugColumnFields() {
        // 使用调试模板
        String debugTemplate = "<!-- 调试模板 - 用于查看column对象的所有可用属性 -->\n" +
                "            #for(column : data.model.columnList)\n" +
                "            === 字段调试信息 ===\n" +
                "            字段名: #(column.fieldName)\n" +
                "            字段驼峰名: #(column.fieldHumpName)\n" +
                "            字段注释: #(column.fieldComments)\n" +
                "            Java类型: #(column.javaType)\n" +
                "            显示类型: #(column.showType)\n" +
                "            字典类型: #(column.dictTypeCode)\n" +
                "            \n" +
                "            <!-- 尝试常见的查询标识字段 -->\n" +
                "            查询标识尝试:\n" +
                "            - queryFlag: #(column.queryFlag)\n" +
                "            - isQuery: #(column.isQuery)\n" +
                "            - isQueryField: #(column.isQueryField)\n" +
                "            - query: #(column.query)\n" +
                "            \n" +
                "            <!-- 尝试常见的列表显示标识字段 -->\n" +
                "            列表显示尝试:\n" +
                "            - listFlag: #(column.listFlag)\n" +
                "            - isList: #(column.isList)\n" +
                "            - isListField: #(column.isListField)\n" +
                "            - list: #(column.list)\n" +
                "            \n" +
                "            <!-- 尝试常见的排序标识字段 -->\n" +
                "            排序标识尝试:\n" +
                "            - sortFlag: #(column.sortFlag)\n" +
                "            - isSort: #(column.isSort)\n" +
                "            - isSortField: #(column.isSortField)\n" +
                "            - sort: #(column.sort)\n" +
                "            \n" +
                "            <!-- 尝试常见的主键标识字段 -->\n" +
                "            主键标识尝试:\n" +
                "            - pkFlag: #(column.pkFlag)\n" +
                "            - isPk: #(column.isPk)\n" +
                "            - isPrimaryKey: #(column.isPrimaryKey)\n" +
                "            - pk: #(column.pk)\n" +
                "            \n" +
                "            <!-- 尝试常见的验证规则字段 -->\n" +
                "            验证规则尝试:\n" +
                "            - validateTypeList: #(column.validateTypeList)\n" +
                "            - validatorTypeList: #(column.validatorTypeList)\n" +
                "            - validateTypes: #(column.validateTypes)\n" +
                "            \n" +
                "            ========================\n" +
                "            \n" +
                "            #end";

        // 使用你现有的kv参数
        Kv kv = getYourExistingKv(); // 替换为你实际的kv获取方法

        // 渲染调试模板
        String result = EnjoyUtil.renderByStr(debugTemplate, kv);

        // 输出结果到控制台和文件
        System.out.println("=== 字段调试结果 ===");
        System.out.println(result);

        // 可选：保存到文件
        try {
            Files.write(Paths.get("debug-output.txt"), result.getBytes());
            System.out.println("调试结果已保存到 debug-output.txt");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 获取你的实际kv参数的方法（需要替换为你的实际实现）
    private static Kv getYourExistingKv() {
        // 这里需要替换为你实际获取kv的代码
        // 例如：return buildKv(tableInfo, configInfo);
        return null; // 占位符
    }

    public static void main(String[] args) {
        debugColumnFields();
    }
}